from django.db import models


# Create your models here.


# 学生信息模型
class Student(models.Model):
    SEX_CHOICES = (  # 大写的变量称为常量，不可变的
        (0, '女'),
        (1, '男'),
    )
    name = models.CharField(max_length=30, null=True, unique=True)  # 昵称，可以为空且唯一
    age = models.IntegerField(null=True, blank=True, verbose_name='年龄')  # 年龄，短整型可以为空
    sex = models.IntegerField(null=True, blank=True, choices=SEX_CHOICES)  # 性别，短整型默认为男
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    update_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
    is_delete = models.BooleanField(verbose_name='逻辑删除', default=False)

    classes = models.ForeignKey('Classes', on_delete=models.CASCADE)  # 设置外键关联学生表且级联删除

    class Meta:
        db_table = 'student'  # 可以直接指定创建的数据表名字

    # 重写模型类delete方法，实现逻辑删除
    def delete(self, using=None, keep_parents=False):
        self.is_delete = True
        self.save()


# 班级表
class Classes(models.Model):
    name = models.CharField(max_length=30, verbose_name='班级名', help_text='班级名')  # help_text可以生成官方文档中的描述信息
    slogan = models.TextField(verbose_name='口号', null=True, blank=True)
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    update_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
    is_delete = models.BooleanField(verbose_name='逻辑删除', default=False)

    class Meta:
        db_table = 'classes'  # 可以直接指定创建的数据表名字

    # 重写模型类delete方法，实现逻辑删除
    def delete(self, using=None, keep_parents=False):
        self.is_delete = True
        self.save()

    def __str__(self):
        return self.name
